<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Stencilbuffer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Stencilbuffer"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Stencilbuffer rootpage-Stencilbuffer skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Stencilbuffer</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Der <b>Stencilbuffer</b> (engl. <i>stencil</i> – Schablone, <i>buffer</i> – Puffer) ist in der <a href="Computergrafik" title="Computergrafik">Computergrafik</a> ein zusätzlich zum Color-Buffer und <a href="Z-Buffer" title="Z-Buffer">Z-Buffer</a> vorhandener Teil des <a href="Framebuffer" title="Framebuffer">Framebuffers</a>. Jedem Pixel ist ein Wert im Stencilbuffer zugeordnet. Die Aufgabe des Stencilbuffers ist es, die Übernahme von Fragmenten in den Framebuffer auf Regionen mit bestimmten Eigenschaften der Stencilwerte einzuschränken. Die zu erfüllende Eigenschaft wird durch die <b>Stencilfunction</b> eingestellt. In welcher Art der Stencilwert bei der Verarbeitung eines Fragments modifiziert wird, wird durch die <b>Stenciloperation</b> festgelegt, die abhängig vom Ausgang des Stencil- und des Z-Tests unterschiedlich eingestellt werden kann.
</p>
<div class="mw-heading mw-heading2"><h2 id="Anwendungen">Anwendungen</h2></div>
<p>Im einfachsten Fall wird durch den Stencilbuffer das Renderinggebiet begrenzt. Dies kann beispielsweise bei einer Auto- oder Flugsimulation zum Ausmaskieren des Cockpits genutzt werden, um die Teile der Szene, die sich hinter dem Cockpit befinden, nicht zu rendern. Ein anderes solches Einsatzgebiet ist die Vermeidung von Z-Fighting bei der Darstellung <a href="Komplanarit%C3%A4t" title="Komplanarität">komplanarer</a> Ebenen (Dreiecke). Mit Hilfe des Stencilbuffers lassen sich auch Spiegel darstellen, in dem die gespiegelte Szene in der originalen nur innerhalb des Spiegelrahmens gerendert wird.
</p><p>Die enge Verzahnung des Stencil- und des Z-Buffers in der <a href="Grafikpipeline" title="Grafikpipeline">Grafikpipeline</a> und insbesondere die Möglichkeit, die <a href="Inkrement_und_Dekrement" title="Inkrement und Dekrement">Inkrementierung oder Dekrementierung</a> als Stenciloperation einstellen zu können, erlaubt aber auch die Implementierung einer Reihe komplexerer Verfahren. Eines der wichtigsten ist der Schattenvolumen-Algorithmus zur Erzeugung von <a href="Schatten_(Computergrafik)" title="Schatten (Computergrafik)">Schatten</a> von Punktlichtquellen. Verfahren dieser Art erfordern es meist, die Szene oder Teile der Szene mehrfach zu rendern, um Zwischenergebnisse im Stencilbuffer bei der Erzeugung eines Bilds sofort verwenden zu können. Daher beanspruchen sie die Grafikhardware in der Regel stark.
</p>
<div class="mw-heading mw-heading2"><h2 id="Geschichte">Geschichte</h2></div>
<p>Den Stencilbuffer in der heutigen Form gibt es etwa seit Anfang der 1990er Jahre mit der Einführung der <a href="SGI_Indigo" title="SGI Indigo">SGI Indigo</a> von <a href="Silicon_Graphics" title="Silicon Graphics">Silicon Graphics</a>. Die erste <a href="Programmierschnittstelle" title="Programmierschnittstelle">Programmierschnittstelle</a>, die den Stencilbuffer unterstützte, war das herstellereigene <a href="IRIS_GL" title="IRIS GL">IRIS GL</a>, gefolgt von <a href="OpenGL" title="OpenGL">OpenGL</a> 1.0 im Jahre 1992. <a href="Direct3D" title="Direct3D">Direct3D</a> enthält ab Version 6.0 Befehle zur Verwendung des Stencilbuffers.
</p><p>Seit 1998 fand der Stencilbuffer Einzug in für den Spielemarkt konzipierte Grafikhardware, vor allem mit Erscheinen der <a href="Nvidia_Riva" title="Nvidia Riva">Riva TNT</a> von Nvidia und der <a href="ATI_Rage" title="ATI Rage">Rage 128</a> von ATI. In allen neueren derartigen Produkten wird er seitdem ebenfalls unterstützt. Technisch belegen bei diesen Produkten bis heute der Stencil- und Z-Buffer den gleichen Speicherbereich auf der Grafikhardware, mit einer Größe von 32 Bit pro Pixel. Der Z-Buffer hat dabei eine Tiefe von 24 Bit pro Pixel, für den Stencilbuffer fallen die restlichen 8 Bit pro Pixel ab.
</p>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortr_2000/3d_fkt/f3d26.htm">Stencil-Buffer</a>, tu-chemnitz.de</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-12-16" href="https://de.wikipedia.org/wiki/?title=Stencilbuffer&oldid=262472319">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>